﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using rent_car.Manejadores;
using System.Collections;

namespace rent_car
{
    class ManejadorDeClientes: Manejador
    {
        public static ManejadorDeClientes getInstancia()
        { 
            if(instancia == null)
            {
                instancia = new ManejadorDeClientes();
            }
            return instancia;
        }

        private ManejadorDeClientes()
        {
            manejadorDB = new EnlaceDatosDataContext();
        }

        #region Manejador Members

        public void agregar(object objeto)
        {
            // no se esta insertando los nuevos datos en el arreglo pk no hay
            cliente cliente = (cliente) objeto;
            this.agregarConductor(cliente.conductore);
            
            //agregando cliente en la tabla persona
            manejadorDB.agregarPersona(
                cliente.nombre,
                cliente.apellido,
                cliente.telefono,
                cliente.celular,
                cliente.sexo,
                cliente.fecha_nac,
                cliente.no_lic,
                cliente.fecha_exp_lic,
                cliente.email,
                cliente.direccion,
                cliente.no_tarj_cred,
                cliente.fecha_exp_tarj_cre,
                cliente.mal_historial,
                cliente.observacion,
                cliente.ciudad_id
                );

            cliente.persona_id = manejadorDB.personas.ToList().Last().persona_id;
          //agregando cliente en tabla clientes
            manejadorDB.agregarCliente(
                cliente.persona_id,
                cliente.conductore.persona_id, 
                cliente.pasaporte,
                cliente.img_pasaporte,
                cliente.activo);
            cliente.compania.cliente = cliente;
            agregarCompania(cliente.compania);
        }

        private void agregarConductor(conductore conductor) {
            manejadorDB.agregarPersona2(
                conductor.nombre,
                conductor.apellido,
                conductor.fecha_nac,
                conductor.no_lic,
                conductor.fecha_exp_lic);           
            conductor.persona_id = manejadorDB.personas.ToList().Last().persona_id;
            manejadorDB.agregarConductores(conductor.persona_id);           
        }

        private void agregarCompania(compania compania) {
            manejadorDB.agregarCompanias(
                compania.cliente.persona_id,
                compania.ciudade.ciudad_id,
                compania.nombre,
                compania.direccion,
                compania.telefono1,
                compania.telefono2, 
                compania.celular,
                compania.email,
                compania.fax);            
        }       

        public void eliminar(int id)
        {
            throw new NotImplementedException();
        }

        public void modificar(object objeto)
        {
            throw new NotImplementedException();
        }

        public ICollection getObject()
        {
            throw new NotImplementedException();
        }

        #endregion
        private EnlaceDatosDataContext manejadorDB = null;
        private static ManejadorDeClientes instancia = null;
    } 
}
